<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xml:lang="zh" lang="zh">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="DC.Type" content="concept"/>
<meta name="DC.Title" content="测试Lucene"/>
<meta name="DC.subject" content="Apache, Lucene, 指南, OSSEZ, OSS 计算技术"/>
<meta name="keywords" content="Apache, Lucene, 指南, OSSEZ, OSS 计算技术"/>
<meta name="DC.Relation" scheme="URI" content="../../tasks/chapter01/chapter01.html"/>
<meta name="prodname" content="Lucene 指南"/>
<meta name="version" content="1.0.0.0"/>
<meta name="brand" content="OSSEZ APACHE LUCENE"/>
<meta name="copyright" content="OSSEZ (中国) 信息技术有限公司 2006, 2012" type="primary"/>
<meta name="DC.Rights.Owner" content="OSSEZ (中国) 信息技术有限公司 2006, 2012" type="primary"/>
<meta name="DC.Format" content="XHTML"/>
<meta name="DC.Identifier" content="chapter01_01"/>
<meta name="DC.Language" content="zh"/>
<link rel="stylesheet" type="text/css" href="../../css/commonltr.css"/>
<link rel="stylesheet" type="text/css" href="../../css/public.css"/>
<title>测试Lucene</title>
<svg:script xmlns:syntaxdiagram-svg="http://www.moldflow.com/2006/syntaxdiagram-svg" xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" type="text/ecmascript" xlink:href="../../js/constants.js"/><svg:script xmlns:syntaxdiagram-svg="http://www.moldflow.com/2006/syntaxdiagram-svg" xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" type="text/ecmascript" xlink:href="../../js/diagram.js"/><svg:script xmlns:syntaxdiagram-svg="http://www.moldflow.com/2006/syntaxdiagram-svg" xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" type="text/ecmascript" xlink:href="../../js/sequence.js"/><svg:script xmlns:syntaxdiagram-svg="http://www.moldflow.com/2006/syntaxdiagram-svg" xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" type="text/ecmascript" xlink:href="../../js/loop.js"/><svg:script xmlns:syntaxdiagram-svg="http://www.moldflow.com/2006/syntaxdiagram-svg" xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" type="text/ecmascript" xlink:href="../../js/decision.js"/><svg:script xmlns:syntaxdiagram-svg="http://www.moldflow.com/2006/syntaxdiagram-svg" xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" type="text/ecmascript" xlink:href="../../js/revdecision.js"/><svg:script xmlns:syntaxdiagram-svg="http://www.moldflow.com/2006/syntaxdiagram-svg" xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" type="text/ecmascript" xlink:href="../../js/boxed.js"/><svg:script xmlns:syntaxdiagram-svg="http://www.moldflow.com/2006/syntaxdiagram-svg" xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" type="text/ecmascript" xlink:href="../../js/unboxed.js"/><svg:script xmlns:syntaxdiagram-svg="http://www.moldflow.com/2006/syntaxdiagram-svg" xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" type="text/ecmascript" xlink:href="../../js/text.js"/><svg:script xmlns:syntaxdiagram-svg="http://www.moldflow.com/2006/syntaxdiagram-svg" xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" type="text/ecmascript" xlink:href="../../js/void.js"/><svg:script xmlns:syntaxdiagram-svg="http://www.moldflow.com/2006/syntaxdiagram-svg" xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" type="text/ecmascript" xlink:href="../../js/notecontainer.js"/><svg:script xmlns:syntaxdiagram-svg="http://www.moldflow.com/2006/syntaxdiagram-svg" xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" type="text/ecmascript" xlink:href="../../js/note.js"/><svg:script xmlns:syntaxdiagram-svg="http://www.moldflow.com/2006/syntaxdiagram-svg" xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" type="text/ecmascript" xlink:href="../../js/main.js"/><link rel="stylesheet" type="text/css" href="css/syntaxdiagram.css"/></head>
<body id="chapter01_01">


  <h1 class="title topictitle1">测试Lucene</h1>

  
  <div class="body conbody">
    <p class="p">本书中的大部分测试都是测试Lucene本身的。实际上，这是否现实呢？难道要测的不是我们自己写的代码而是库本身？有个Test Driven Development的姊妹篇是用来学习API的：Test Driven Learning。它为新API写测试以了解它是如何工作以及你能从中得到什么时非常有帮助。这正是我们在大部分代码示例中所做的，所以测试都是测试Lucene它本身。但是不要把这些为学习而做的测试抛开。保留它们以确保你在升级到新版的API或因API改变而重构时，它们能够保持真值。</p>

    <div class="section"><h2 class="title sectiontitle">模型对象 </h2>
      
      <p class="p">在一些用例中，我们使用模型对象来测试。模型对象用来作为探测器传入真实的业务逻辑，以判断这个业务逻辑是否正常工作。例如，第4章中有个SynonymEngine接口（4.6节）。使用这个接口的真实业务逻辑是个分析器。当我们想测试这个分析器本身时，SynonymEngine使用什么类型就不重要，我们只想使用一个定义良好并有可预见行为的对象。</p>

      <p class="p">模型对象可以使得测试用例尽可能简单，这样它们每次只测试系统的一个方面，在测试失败要修正什么错误时没有纠缠的依赖。使用模型对象的一个好处来自于设计的变动，例如关系的分离和设计使用接口代替直接具体实现。</p>

    </div>

  </div>

<div class="related-links">
<div class="familylinks">
<div class="parentlink"><strong>父主题：</strong> <a class="link" href="../../tasks/chapter01/chapter01.html">Lucene 介绍</a></div>
</div>
</div>

</body>
</html>